package com.ray.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.ray.bean.ProcedureBean;
import com.ray.bean.ProcessBean;
import com.ray.bean.QCReportBean;
import com.ray.pojo.BaseProcessDetailPojo;

public interface ProcedureMapper {

	// 从工序表获取生产线
	List<String> getProductionLineFromProcess();

	// 通过工序代码更新工序
	int  updateProcessByCode(@Param("processBean") ProcessBean processBean);

	/*
	 * //修改工序 wangr void updateProcess(@Param("processBean") ProcessBean
	 * processBean);
	 */
	// 添加工序 wangr
	void insertProcess(@Param("processBean") ProcessBean processBean);

	// 获取工序表详情
	List<ProcessBean> getProcessDetail(Map map);

	// 获取最大排序数
	int getMaxSort();

	// 添加工序
	void insertProcedure(@Param("procedureBean") ProcedureBean procedureBean);

	// 查询车间是否存在
	int getWorkShopCount(@Param("workShop") String workShop);

	// 批量删除
	void deleteAllProcess(@Param("idList") List<String> idList);

	// 获取表格数据@wangrong
	List<ProcessBean> getTableDate(Map map);

	// 查询工序是否存在
	ProcessBean getProcessBean(ProcessBean process);

	// List格式修改工序
	void updateProcessByFile(@Param("returnList") List<ProcessBean> returnList);

	// List格式添加工序
	void addProcessByFile(@Param("processList") List<ProcessBean> processList);

	// 根据工序id查找工序
	ProcessBean getProcessByIdentify(@Param("identify") Integer identify);

	List<ProcessBean> getProcessIdAndName(@Param("loginCompany") String loginCompany);

	/**
	 * 通过工序id删除工序qc配置
	 * @param map
	 * @return
	 */
	int deleteQCTableByProcessId(Map map);

	/**
	 * 添加工序qc配置
	 * @param map
	 * @return
	 */
	int addQCTable(Map map);

	/**
	 * 通过工序id获取qc配置
	 * @param map
	 * @return
	 */
	List<BaseProcessDetailPojo> getProcessQCTableByProcessId(Map map);

	/**
	 * 修改qc时间
	 * @param map
	 * @return
	 */
	int updateQCTime(Map map);

	/**
	 * 插入qc主内容
	 * @param map
	 * @return
	 */
	int insertQCMain(Map map);

	/**
	 * 插入qc明细
	 * @param map
	 * @return
	 */
	int insertQCDetail(Map map);

	/**
	 * 查询qc报工数据
	 * @param map
	 * @return
	 */
	int getQcReportDataCount(Map map);
	List<Integer> getQCIdList(Map map);
	List<QCReportBean> getQcReportData(Map map);

	/**
	 * 审核qc报工
	 * @param map
	 * @return
	 */
	int approvalQCReport(Map map);

	/**
	 * 获取本人可审核的工序
	 * @param map
	 * @return
	 */
	List<String> getSelfCanApprovalProcessId(Map map);

	/**
	 * 获取qc显示所需数据
	 * @param map
	 * @return
	 */
	List<QCReportBean> getQCDisplay(Map map);

	/**
	 * 获取报工数据
	 * @param map
	 * @return
	 */
	List<QCReportBean> getReportDetail(Map map);

	/**
	 * 获取qc工序可审核人
	 * @param processId
	 * @return
	 */
	List<String> getProcessApprovelUserIdByProcessId(@Param("processId")Integer processId);

	/**
	 * 获取该类型最后一次报工的id
	 * @param map
	 * @return
	 */
	Integer getLastTypeQCReport(Map map);

	/**
	 * 获取qc首检的值
	 * @param map
	 * @return
	 */
	List<BaseProcessDetailPojo> getFirstQCValueById(Map map);

}
